// src/util/request.js
import axios from 'axios'

// 使用相对路径，通过 Vite 代理发送请求
const BASE_URL = ''

// 创建 Axios 实例
const http = axios.create({
    baseURL: BASE_URL,
    timeout: 10000,
    withCredentials: true
})

// 请求拦截器 - 添加 token
http.interceptors.request.use(
    config => {
        // 从 localStorage 获取 token 并添加到请求头
        const token = localStorage.getItem('token')
        if (token) {
            // 检查token是否已经包含Bearer前缀，如果没有则添加
            if (token.startsWith('Bearer ')) {
                config.headers['Authorization'] = token
            } else {
                config.headers['Authorization'] = `Bearer ${token}`
            }
        }
        return config
    },
    error => Promise.reject(error)
)

// 响应拦截器
http.interceptors.response.use(
    response => {
        return response.data
    },
    error => {
        console.error('请求错误:', error)
        if (error.response) {
            // 如果是 401 错误，跳转到登录页
            if (error.response.status === 401) {
                // 清除本地 token
                localStorage.removeItem('token')
                localStorage.removeItem('userInfo')
                // 跳转到登录页
                window.location.href = '/#/login'
                alert('登录已过期，请重新登录')
            } else {
                alert(`请求错误: ${error.response.status} - ${error.response.data?.msg || '未知错误'}`)
            }
        } else if (error.request) {
            alert('网络异常，请检查后端是否启动')
        } else {
            alert(error.message || '未知错误')
        }
        return Promise.reject(error)
    }
)

export default http